home *** CD-ROM | disk | FTP | other *** search
/ Beginning Mac Programming / Beginning Mac Programming.bin / Open Me for REALbasic 3 / REALbasic 3.2 / Example Projects / Reusable Classes_Code / ResizeMoveBox / Read me next >
Text File  |  2001-01-10  |  6KB  |  127 lines

  1. ResizeMoveBox
  2. by Ernesto Giannotta © 2001
  3.  
  4. Hi guys!
  5. A few words about this thing.
  6.  
  7. Long time waited feature for RealBasic listboxes, the Horizontal scrollbar is here.
  8. But to be a real listbox it needs two more things to me:
  9. Resizeable and Movable columns.
  10.  
  11. Well, here they are!
  12.  
  13. Here's the classes details:
  14.  
  15. Set up:
  16. You need to drag in the same window a ResizeMoveBox and an ActiveHeading
  17. the box will locate the ActiveHeading and init it
  18.  
  19. ActiveHeading class has
  20. Properties:
  21. • MaxColSize as Integer    with this you can set the maximum width a column can have
  22.  
  23. • MinColSize as Integer    with this you can set the minimum width a column can have
  24.  
  25. • MoveEnabled as Boolean    set this to false and the columns will not move
  26.  
  27. • ResizeEnabled as Boolean    set this to false and the columns will not resize
  28.  
  29. WARNING!  if you have set a BrowseColumn subclass (which is the only way to make things work since original class is protected) then you MUST change the creator in your ResizeMoveBox control Open handler to match your subclass name and init all the linked objects as shown in the example project.
  30. In the open event of the ResizeMoveBox you can also create the empty rows that must be filled with
  31. the FillColumns method
  32. e.g. (snippet of example Open event handler) :
  33.  
  34.   for i = 0 to me.ColumnCount - 1
  35.     
  36.     //  Best way is to pass a subclass of BrowseColumn object
  37.     me.bc(i) = new myCustomBrowseColumn(me, i)    <---  here you put the name of your custom 
  38.                                                                                                                                                                                      BrowseColumn subclass
  39.  
  40.     //  Strongly reccomended that you fill your headings here;
  41.     //  Should work also with values filled in InitialValue 
  42.     //  at design time but things get too messy… don't know why
  43.     me.bc(i).Heading = "Column " + Str(i)
  44.     
  45.     //  Could set all the columns properties here
  46.     me.bc(i).Alignment = 3
  47.     me.bc(i).AlignmentOffset = -5
  48.           
  49.   next
  50.  
  51.  
  52.   //   not strictly necessary, depends on how you handle filling of columns
  53.   me.DeleteAllRows
  54.   for i = 1 to 10  //  add 10 rows
  55.     me.AddRow ""
  56.   next
  57.    
  58.   //  a cool core class method:
  59.   //  this will set all columns as appropriate and trigger the ColumnFill event,
  60.   //  if ColumnFill event returns false (default if left empty) 
  61.   //  then the Fill event of BrowseColumn class will automatically trigger
  62.   //  else anything is up to you
  63.    me.FillColumns
  64.   
  65.     
  66. At this point a BrowseColumn object has already been created for every column of the list according to your settings so, if you want to add more columns, remember to create them 
  67.  
  68. ResizeMoveBox class has
  69. method:
  70. • FillColumns   this simple call will set all columns as appropriate and 
  71.                         fire the ColumnFill event letting you populate all your list columns.
  72.                                                 if ColumnFill event returns false (default if left empty) 
  73.                                               then the Fill event of BrowseColumn class will automatically trigger
  74.                                               else anything is up to you
  75.  
  76. FillColumns method calls the Fill method of each BrowseColumn.
  77.  
  78. events:
  79. • ColumnFill    this event is triggered by the FillColumns method giving you the control 
  80.                         here you could do all necessary steps to make your fill methods work
  81.                        If false  is returned, then the Fill event in BrowseColumn will fire
  82.                        If true  is returned, then the Fill event in BrowseColumn will not  fire
  83.  
  84. BrowseColumn class has 
  85. constructor:
  86. • New BrowseColumn(theBox as ResizeMoveBox, theCol as Integer) as BrowseColumn
  87. theCol parameter is stored permanently in the Col private property of the BrowseColumn thus allowing a permanent reference by its original position
  88.  
  89. Properties:
  90. • Alignment as Integer   the alignment style for the column; handles standard RealBasic ColumnAlignment values
  91.  
  92. • AlignmentOffset as Integer   the alignment style; handles standard RealBasic ColumnAlignmentOffset values
  93.  
  94. • Heading as String   the heading text for the column
  95.  
  96. • Indexed as Boolean   true if the Heading of the column has been clicked; only one column should have this set to true
  97.  
  98. • Type as Integer   the column type; handles standard RealBasic ColumnType values
  99.  
  100. • Width as Integer   the column width; handles only absolute pixel values.
  101. SORRY! relative percent values are NOT supported 
  102.  
  103. methods:
  104. • Fill(theCol as Integer)   this method will fire the fill event of the class; 
  105. It's intended for the creation of subclasses of BrowseColumn and will hold your custom methods to populate it with data 
  106.  
  107. • FillRow(theRow as Integer, theCol as Integer)   this method will fire the fillrow event
  108. It's intended for the creation of subclasses of BrowseColumn and will hold your custom methods to populate it with data 
  109.  
  110. • OriginalCol() as Integer   this will return the original number of the column stored in the Col Property when first created 
  111.  
  112. events:
  113. • Fill(theCol as Integer)   this event is fired by the fill method of the class; 
  114. It's intended for the creation of subclasses of BrowseColumn and will hold your custom methods to populate it with data 
  115.  
  116. • FillRow(theRow as Integer, theCol as Integer)   this event is fired by the fillRow method and will let you fill the list row and column passed according to values stored in properties
  117.  
  118. Well, that's all folks!
  119.  
  120. Of course this is provided as is, disclaim any damage may it produce to your data and bla…bla…bla…
  121. Use it as you like and please feed my EGO mentioning me in your credits.
  122.  
  123. Comments and suggestions, as well as bug reports, are welcome at musicbox@tin.it
  124.  
  125. Cool Runnings y'all!
  126.  
  127.